# -*- coding: iso-8859-1 -*-
# Programme au challenge de NIM
# 
# Titre: 		Qui prendra le dernier ?, par CommComm
# url_site:		http://www.newbiecontest.org
# url_challenge:	http://www.newbiecontest.org/index.php?page=epreuve&no=147
# url_epreuve: 		http://www.newbiecontest.org/epreuves/prog/prog14.php
import urllib2



class Challenge:
	# Fonction de recuperation et d'envoie des valeures
	def envoie_recup(self, dataEnvoyer=None):
	  opener = urllib2.build_opener()
	  opener.addheaders = [('User-agent', 'Mozilla/5.0')]
	  opener.addheaders = [('Cookie', 'xxxxx')]
	  if (dataEnvoyer==None):
	    f=opener.open('http://www.newbiecontest.org/epreuves/prog/prog14.php')
	    data=f.read()
	    self.strTableau=data[45:len(data)-10].split("/")
	    self.nb_tableau=len(self.strTableau)
	    self.intTableau=[]
	    i=0
	    self.ancienTableau=self.strTableau
	    for entier in self.strTableau:
	      self.intTableau.append(int(entier))
	  else:
	    f=opener.open('http://www.newbiecontest.org/epreuves/prog/prog14.php'+dataEnvoyer)
	    print 'http://www.newbiecontest.org/epreuves/prog/prog14.php'+dataEnvoyer
	    data=f.read()
	    
	    champs=data.split("<br>")
	    for ligne in champs:
	      print ligne
	    
	    self.strTableau=champs[4][14:].split("/")
	    self.nb_tableau=len(self.strTableau)
	    self.intTableau=[]
	    i=0
	    self.ancienTableau=self.strTableau
	    for entier in self.strTableau:
	      self.intTableau.append(int(entier))

	# On doit trouver le max du tableau et faire le calcul xor pour trouver la somme de nim a retirer a l'elt max.
	def process_coup(self):
	  i=0
	  self.sum_min=0
	  chaine=""
	  self.max_index=self.intTableau.index(max(self.intTableau))
	  # calcul du xor des {elt}-max(tableau)
	  for i in range(len(self.intTableau)):
	    if (i!=self.max_index):
	      self.sum_min=self.sum_min^int(self.intTableau[i])
	  self.nb_jetons=self.sum_min
	  #self.nb_jetons=self.intTableau[self.max_index]-self.sum_min
	  if (self.nb_jetons>0):
	    self.intTableau[self.max_index]=self.sum_min
	  elif (self.nb_jetons < 0):
	    print "ATTENTION : inf à zéro"
	    self.nb_jetons=1
	    self.max_index=0
	  elif(self.nb_jetons==0):
	    print "ATTENTION : égal à zéro"
	    self.nb_jetons=1
	    self.max_index=0
	    
	  i=0
	  # On recopie les valeurs modifiees dans le tableau pour renvoie
	  self.strTableau=[]
	  for entier in self.intTableau:
	    self.strTableau.append(str(entier))
	    i=i+1 
	
	def __init__(self):
	  self.envoie_recup()
	  self.process_coup()
#	  print "######################### COUP 1 #########################"
#	  print "Sum nim        : %s" % self.sum_min
#	  print "Ancien Tableau : %s" % self.ancienTableau
#	  print "Index modifier : %s" % str(self.max_index+1)
#	  print "On doit jouer  : %s" % self.strTableau
#	  print " "
	  #print "Requete=%s" % ("?numtas="+str(self.max_index)+"&nbpions="+self.strTableau[self.max_index])
	  nb_coup_jouer=1
	  while(1):
	    if (self.sum_min == 0):
	      self.sum_min = 1
	    print " "
	    self.envoie_recup("?numtas="+str(self.max_index+1)+"&nbpions="+str(self.nb_jetons))
	    self.process_coup()
#	    print "######################### COUP "+str(nb_coup_jouer)+" #########################"
#	    print "Sum nim        : %s" % self.sum_min
#	    print "Ancien Tableau : %s" % self.ancienTableau
#	    print "Index modifier : %s" % self.max_index
#	    print "On doit jouer  : %s" % self.strTableau
#	    print " "
	    nb_coup_jouer=nb_coup_jouer+1
	  print " "
if (__name__=="__main__"):
	monChallenge = Challenge()
